let hami_mod = {};
hami_mod.dateFormat = function(fmt, date) {
    let ret;
    const opt = {
    "Y+": date.getFullYear().toString(), // 年
    "m+": (date.getMonth() + 1).toString(), // 月
    "d+": date.getDate().toString(), // 日
    "H+": date.getHours().toString(), // 时
    "M+": date.getMinutes().toString(), // 分
    "S+": date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
    };
    for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
    fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
    };
    };
    return fmt;
}

//请求截图
hami_mod.getScreenCapture=()=>{
    let Thread = threads.start(function(){
        if(auto.service != null){  //如果已经获得无障碍权限
                //由于系统间同意授权的文本不同，采用正则表达式
                let Allow = textMatches(/(允许|立即开始|统一)/).findOne(10*1000);
                if(Allow){
                    Allow.click();
                }
        }
    });
    if(!requestScreenCapture(true)){
        log("请求截图权限失败");
        return false;
    }else{
        Thread.interrupt()
        log("已获得截图权限");
        return true;
    }
}

//解锁屏幕
hami_mod.unlock=()=>{
    if(!device.isScreenOn()){
        device.wakeUp();
        sleep(500);
        swipe(500,2000,500,1000,210);
    }
}

hami_mod.killApp=(appName)=>{//填写包名或app名称都可以
    var name = getPackageName(appName);//通过app名称获取包名
    if(!name){//如果无法获取到包名，判断是否填写的就是包名
        if(getAppName(appName)){
            name = appName;//如果填写的就是包名，将包名赋值给变量
        }else{
            return false;
        } 
    }

    app.openAppSetting(name);//通过包名打开应用的详情页(设置页)
    text(app.getAppName(name)).waitFor();//通过包名获取已安装的应用名称，判断是否已经跳转至该app的应用设置界面
    sleep(500);//稍微休息一下，不然看不到运行过程，自己用时可以删除这行
    let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*)/).findOne();//在app的应用设置界面找寻包含“强”，“停”，“结”，“行”的控件
    //特别注意，应用设置界面可能存在并非关闭该app的控件，但是包含上述字样的控件，如果某个控件包含名称“行”字
    //textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/)改为textMatches(/(.*强.*|.*停.*|.*结.*)/)
    //或者结束应用的控件名为“结束运行”直接将textMatches(/(.*强.*|.*停.*|.*结.*|.*行.*)/)改为text("结束运行")
    

    if (is_sure.enabled()) {//判断控件是否已启用（想要关闭的app是否运行）
        is_sure.parent().click();//结束应用的控件如果无法点击，需要在布局中找寻它的父控件，如果还无法点击，再上一级控件，本案例就是控件无法点击
        textMatches(/(.*确.*|.*定.*)/).findOne().click();//需找包含“确”，“定”的控件
        log(app.getAppName(name) + "应用已被关闭");
        sleep(1000);
        back();
    } else {
        log(app.getAppName(name) + "应用不能被正常关闭或不在后台运行");
        back();
    }
}

hami_mod.click_widget = (widget)=>{
    if (widget != null){
        click(widget.bounds().centerX(),widget.bounds().centerY());
    }
};

hami_mod.capture_png = (path)=>{
    captureScreen(path);
};

hami_mod.pull_down = ()=>{
    swipe(500,1500,500,1550,1);
};
hami_mod.pull_up = ()=>{
    swipe(500,1550,500,1500,1);
};

hami_mod.findImg_and_click = (tImg_path)=>{
    // let shot_path = '/storage/emulated/0/_img/current_shot.png';
    // captureScreen('/storage/emulated/0/_img/current_shot.png');
    let tImg = images.read(tImg_path);
    let current_shot = captureScreen();
    let p = findImage(current_shot, tImg);
    log(p);
    if (p){
        click(p.x,p.y);
    }
};
hami_mod.send_log = (data)=>{
    let token = "be50c6700b794b65a855f64000705133";
    let url = "http://www.pushplus.plus/send";
    let r = http.postJson(url, {
    token: token,
    title: hami_mod.dateFormat("YYYY-mm-dd HH:MM:SS", new Date()),
    content: data,
    });
    log(r.body.string());
};
hami_mod.click_point = (point) => {
    click(point.x,point.y);
};
hami_mod.unlock();
sleep(2000);
hami_mod.getScreenCapture();

module.exports = hami_mod;